//
//  UniversalEngine.h
//  易商城
//
//  Created by SongZhiyuan on 14/10/22.
//  Copyright (c) 2014年 Mac4. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "NSData+NSData_AES.h"


#define __BASE64( text )        [EncryptionBase64 base64StringFromText:text]
#define __TEXT( base64 )        [EncryptionBase64 textFromBase64String:base64]

@interface UniversalEngine : NSObject

//typedef void (^Success) (id jsonTargets,id jsonTarget);
//typedef void (^ConnectionError)(NSInteger errorNum);

+(instancetype)sharedInstance;

/**md5 加密*/
+ (NSString *)md5:(NSString *)str;
/// 32 位MD5 加米方式
+ (NSString *) getMd5_32Bit_String:(NSString *)srcString;

/** 将文本转换为base64格式字符串输入参数 :text    */
+ (NSString *)base64StringFromText:(NSString *)text;
/** 将base64格式字符串转换为文本*/
+ (NSString *)textFromBase64String:(NSString *)base64;
+ (NSString *)base64EncodedStringFrom:(NSData *)data;
////////////////////////////////////==============/////////////////////////////


/**获取设备的内存情况*/
+ (NSString *)usedSpaceAndfreeSpace;

//+(void)addHistory:(id)currentProduct;

/**查询浏览记录 *返回数据数组*/
+(NSMutableArray *)recentBrowseData;
/** 删除浏览记录*/
+(void)deletebrowsedata;



//=============================
/**添加搜索记录 */
+(void)addDataHistory:(NSString *)hisString forKey:(NSString *)key;
/** 查询搜索记录*/
+(NSMutableArray *)recentSearchDataForKey:(NSString *)key;
/** 删除搜索记录*/
+(void)deleteSearchDataForKey:(NSString *)key;
//=============================


/**计算UserDefaults的所有数据,以及SDwebImgae的缓存大小
 *返回  M
 */
+(CGFloat)calculateTheUserDefaultsCache;
/**删除UserDefaults的所有数据 */
+ (void)deleteUserDefaults;

/**清理本地缓存*/
+ (void) resetCache;
/**添加本地缓存*/
+ (void) setObject:(NSData*)data forKey:(NSString*)key;
/**取本地本地缓存*/
+ (id) objectForKey:(NSString*)key;

/**遍历文件夹获得文件夹大小，返回多少M
 *folderPath: 文件的路径
 */
- (float ) folderSizeAtPath:(NSString*) folderPath;


/**保持原来的长宽比，生成一个缩略图
 *image:传入Image
 *asize:设置大小
 */
+ (UIImage *)thumbnailWithImageWithoutScale:(UIImage *)image size:(CGSize)asize;
/**修发图片大小*/
+ (UIImage *) imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize) newSize;
/** 生成GUID*/
+ (NSString *)generateUuidString;


/** 将JOSN 时间 转为NSstring*/
-(NSString *)getStringDateFromJSON:(NSString *)dateString;
/** 验证是否为手机格式*/
-(BOOL)validationPhoneFormat:(NSString *)textNum;


/**取当前时间*/
-(NSString *)getNewData;

/**几个月后的日期*/
-(NSDate *)getPriousorLaterDateFromDate:(NSDate *)date withMonth:(int)month;

/**
 输出两个日期中间日期
 */
- (NSMutableArray *)arrayBetweenDate:(NSDate *)date1 anotherDay:(NSDate *)date2;

/**
 /////  和当前时间比较
 ////   1）1分钟以内 显示        :    刚刚
 ////   2）1小时以内 显示        :    X分钟前
 ///    3）今天或者昨天 显示      :    今天 09:30   昨天 09:30
 ///    4) 今年显示              :   09月12日
 ///    5) 大于本年      显示    :    2013/09/09
 **/
- (NSString *)formateDate:(NSString *)dateString withFormate:(NSString *) formate;


/**
 *  //是否在第一天
 */
-(BOOL)isNewDayFirstOpen;
/**
 *  生成二维码
 *  @param string 需要生成二维码的内容
 *  @param size   二维码的大小
 *  @param red green blue   RGB 的颜色值
 *  @return 返回 UIImage
 */
+ (UIImage *)imageQRcodeString:(NSString *)string Size:(CGFloat)size withRed:(CGFloat)red Green:(CGFloat)green Blue:(CGFloat)blue;

/**
 *  对view分别 在顶部  下部  划线
 *
 *  @param v 需要划线的view
 *  @param h 线的宽度
 *  @param c 线的颜色
 */
+ (void)topLine:(UIView*)v andHeight:(CGFloat)h andColor:(UIColor*)c;
+ (void)bottomLine:(UIView*)v andHeight:(CGFloat)h andColor:(UIColor*)c;
+ (void)bottomLine:(UIView*)v andRect:(CGRect)rc andColor:(UIColor*)c;
/**
 *  首字母排序，支持中文和英文
 *
 *  按照拼音顺序排序
 *  @param aSrcArray  待排序的数组
 *  @param completion 排序完成后的回调  返回字典和拍好序的字典keys
 *  by Q&Y
 */
+ (void)sortWithFirstLeter:(NSArray*)aSrcArray completionBlock:(void(^)(NSDictionary* sortedDictionary, NSArray* sortedKeys))completion;

//将string转成带密码的data
+ (NSString*)encryptAESData:(NSString*)string app_key:(NSString*)key;

//将带密码的data转成string
+(NSString*)decryptAESData:(NSData*)data app_key:(NSString*)key;

@end
